#ifndef __APP_DEVICE_H__
#define __APP_DEVICE_H__

#include "app_buffer.h"
#include "app_message.h"
#include "pthread.h"
typedef struct 
{ 
    char *filename;                         // 设备文件名 (串口文件路径)
    int fd;                                 // 设备文件描述符 （open(filename)产生）
    Buffer *up_buffer;                      // 上行数据缓存
    Buffer *down_buffer;                    // 下行数据缓存
    pthread_t read_thread;                  // 读取线程标识
    int is_running;                         // 读线程是否正在运行
    long last_write_time;                   // 上次写入时间
    int (*post_read)(char *data, int len);   // 读取数据后处理函数 蓝牙数据 -> 字符数组消息
    int (*pre_write)(char *data, int len);   // 写入数据前处理函数 字符数组消息 -> 蓝牙数据
}Device;
/**
 * @brief 设备初始化
 * 
 * @param filename 设备文件名
 * @return Device* 设备对象
 */
Device *app_device_init(char *filename);

/**
 * @brief 设备启动
 * 
 * @return int 
 */
int app_device_start(void);

//int app_device_stop(void);
/**
 * @brief 设备销毁
 * 
 */
void app_device_destroy(void);

#endif /* __APP_DEVICE_H__ */